// 题12
function Test12() {
    function foo(something) {
        this.a = something
    }
    var obj1 = {
        foo
    }

    var obj2 = {}

    obj1.foo(2)
    console.log(obj1.a);
    obj1.foo.call(obj2, 3)
    console.log(obj2.a);

    var bar = new obj1.foo(4)
    console.log(obj1.a);
    console.log(bar.a);
    var bindFn = obj1.foo.bind(obj2)
    bindFn(7)
    var bar2 = new bindFn(8)
    console.log(obj2.a);
    console.log(bar2.a);

}
Test12()
 // 结果：
 // 2
 // 3
 // 2
 // 4
 // 7
 // 8
/**
 * 解析：this绑定的优先级: new绑定 > 显式绑定 > 隐式绑定 > 默认绑定
 * 
 */